package com.gxnu.edu.cn.ttxxt.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gxnu.edu.cn.ttxxt.entity.FontSettings;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Optional;

@Mapper
public interface FontSettingRepository extends BaseMapper<FontSettings> {

    /**
     * 根据用户ID查询字体设置列表
     * @param userId 用户ID
     * @return 字体设置列表
     */
    List<FontSettings> findByUserId(@Param("userId") Long userId);

    /**
     * 根据用户ID和默认状态查询字体设置
     * @param userId 用户ID
     * @param isDefault 是否默认(0-否，1-是)
     * @return 字体设置(Optional包装)
     */
    Optional<FontSettings> findByUserIdAndIsDefault(@Param("userId") Long userId,
                                                    @Param("isDefault") Integer isDefault);

    /**
     * 检查用户是否存在指定状态的字体设置
     * @param userId 用户ID
     * @param isDefault 是否默认(0-否，1-是)
     * @return 是否存在
     */
    boolean existsByUserIdAndIsDefault(@Param("userId") Long userId,
                                       @Param("isDefault") Integer isDefault);

    /**
     * 根据字体设置ID和用户ID查询
     * @param fontSettingId 字体设置ID
     * @param userId 用户ID
     * @return 字体设置(Optional包装)
     */
    Optional<FontSettings> findByIdAndUserId(@Param("fontSettingId") Long fontSettingId,
                                             @Param("userId") Long userId);

    /**
     * 设置用户的所有字体设置为非默认
     * @param userId 用户ID
     * @return 影响行数
     */
    int clearDefaultSettings(@Param("userId") Long userId);


    void updatefontSettings(FontSettings fontSettings);

    @Select(" select * from font_settings where user_id=#{userId} ")
    FontSettings selectByUserId(Long userId);

}